<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>复习</title>
</head>
<body>
<!-- 
    继承模式
 -->

<script type="text/javascript">
    // 原型链继承 （目的：得到方法）⭐📌
    // 父元素
    function Person(){}
    Person.prototype.test = function(){}

    // 子元素
    function Child(){}
    Child.prototype = new Person();
    // 修改Child constructor 指向
    Child.prototype.constructor = Child;

    // 创建子元素实例对象
    var child = new Child(); 
    // 子元素Child 的实例对象中，有父元素的方法
    child.test();

    // 借用构造函数 （目的：得到属性）⭐📌
    function Parent(name,age){
        this.name = name
        this.age = age
    }
    Parent.prototype.test = function(){}
    function Child(name,age,gender){
        // 借用构造函数 this.Parent(name,age)
        Parent.call(this,name,age) // this 一般指向 实例对象var c=new Child('李四',18)
        this.gender = gender
    }
    // child.name为张三，child.age为18。但child没有test()
    var child = new Child('张三',18,'男')

    // 组合使用  ⭐📌
    function Parent(name,age){
        this.name = name
        this.age = age
    }
    Parent.prototype.test = function(){}

    function Child(name,age,gender){
        // 借用构造函数 this.Parent(name,age)
        Parent.call(this,name,age)
        this.gender = gender
    }
    Child.prototype = new Parent()
    Child.prototype.constructor = Child

    // child.name为张三，child.age为20。此时child 有test() 方法（继承）
    var child = new Child('张三',20,'男')
</script>
</body>
</html>